// 假设本地机器无法做加减乘除法，需要通过远程请求让服务端来实现。
// 以加法为例，现有远程API的模拟实现
const addRemote = async (a, b) => new Promise(resolve => {
  setTimeout(() => resolve(a + b), 1000)
})

// 请实现本地的add方法，调用addRemote，能最优的实现输入数字的加法。
async function add(...inputs) {

  // 你的实现
  if (arguments.length > 2) {
    let r = 0
    r = await addRemote(arguments[0], arguments[1])
    for (let i = 0; i < arguments.length; i++) {
      if (i > 1) {
        r = await addRemote(r, arguments[i])
      }
    }
    return r
  } else {

    let result = await addRemote(...inputs)
    return result
  }
}


// 请用示例验证运行结果:
add(1, 2)
  .then(result => {
    console.log(result) // 3
  })

add(3, 5, 2)
  .then(result => {
    console.log(result) // 10
  })





/**
 * 等待
 *
 * @remarks
 *
 * 可以取消的等待
 *
 * @param {number} ms - 时间(毫秒)
 * @param {T|undefined} value - 返回值
 */
function delay(ms, value) { }

// 演示
(async () => {
  const p1 = delay(1000, true);
  const p2 = delay(2000, false);

  try {
    const result = await Promise.race([p1, p2]);
    // true
  } catch (e) {
  } finally {
    p1.cancel();
    p2.cancel();
  }
})();